<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
    <script>
        /*
            逻辑运算符里的短路
                存在于
                    &&
                    ||
                
            短路是指：如果从左边就能确定整个式子的结果，那么就没必要再执行右边了，右边就不会被执行，这就叫短路

            &&：
                一假则假
                只要左边为假，没必要看右边，所以发生短路

            ||：
                一真则真
                只要左边为真，没必要看右边，所以发生短路

           
            逻辑运算式的最终结果跟短路有关，如果短路了，那么整个式子结果是左边的结果
            如果没短路，那么整个式子结果就是右边的结果
        */

        // true && alert(1) // 弹出1
        // false && alert(2) // 不弹

        // true || alert(1) // 不弹
        // false || alert(2) // 弹

        // 只有false、0、空字符串、NaN、undefined、null是假，其他都是真

        // 5 + 2 && alert(10) // 弹
        // 5 - 5 && alert(20) // 不弹

        // ||: 左边为真就短路
        // let res1 = 5 + 2 || 3 * 4
        // console.log(res1) // 7

        // let res2 = 5 + 2 && 3 * 4
        // console.log(res2) // 12


        // let res3 = 5 - 8 || 5 * 2
        // console.log(res3) // -3

        // 空格字符串也是真，一真则真
        // let res4 = ' ' || 5 * 2
        // console.log(res4) // 空格字符串

        // let res5 = '' || 5 * 2
        // console.log(res5) // 10

        // let res5 = '0' || 5 * 2
        // console.log(res5) // '0'

        // let res6 = '' + 0 || 5 * 2
        // console.log(res6) // '0'

        // let res7 = 0 || 5 * 2
        // console.log(res7) // 10

        let res8 = 0 + null || 5 * 2
        console.log(res8) // 10

        // alert( 1||2 ) // 1
    </script>
</body>
</html>